/*
interface
    a.使用interface声明，可以看成特殊的抽象类，即所有的方法都必须是抽象的
    b.接口中没有构造方法，不能被实例化。
    c.一个接口不实现另一个接口，但可以继承多个其他接口。
    d.接口中声明的成员变量默认都是 public static final 的，必须显示的初始化。
    e.接口必须通过类来实现(implements)它的抽象方法，然后再实例化类。类实现接口的关键字为implements。
        （类必须实现接口的所有方法，否则定义为抽象类）
            class ClassName implements InterfaceName1, InterfaceName2...{
                public xxx method1(){};
                public xxx method2(){};
                ...
            }
 */
public class Interface {
    public static void main(String[] args){
        SeagateHdd seagateHdd = new SeagateHdd();
        seagateHdd.writeData("希捷");
        System.out.println("读取："+seagateHdd.readData());
        seagateHdd.doFix();
        System.out.println("---");

        SamsungHdd samsungHdd = new SamsungHdd();
        samsungHdd.writeData("三星");
        System.out.println("读取："+samsungHdd.readData());
        System.out.println("---");
    }
}

interface SataHDD{
    public static final int CONNECT_LINE = 4;
    public void writeData(String data);
    public String readData();
}

interface FixHdd{
    String addrs = "重庆市";
    boolean doFix();
}

class SeagateHdd implements SataHDD, FixHdd{
    String data;
    public void writeData(String data){
        System.out.println("SeagateHdd 写入成功："+data);
        this.data = data;
    }
    public String readData(){
        return data;
    }
    public boolean doFix(){
        System.out.println(addrs+"修复成功");
        return true;
    }
}

class SamsungHdd implements SataHDD{
    public void writeData(String data){
        System.out.println("SamsungHdd："+data+"写入成功");
    }
    public String readData(){
        System.out.println("读取成功");
        return "数据";
    }
}

abstract class XXXHdd implements SataHDD{
    public String readData(){
        System.out.println("读取成功");
        return "数据";
    }
}


